from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

from base.app.base import BasePage, BaseHandle


# 定义对象库层
class BrowserPage(BasePage):
    def __init__(self):
        super().__init__()
        # 清空浏览器按钮
        self.browser_clean_element = (By.ID, 'com.android.browser:id/clear')
        # 浏览器输入框
        self.browser_input_element = (By.ID, "com.android.browser:id/url")

        # self.browser_input_element.send_keys(Keys.ENTER)

        # 浏览器输入框清空
    def find_browser_clean_element(self):
        return self.get_element(self.browser_clean_element)

    # 浏览器输入框
    def find_browser_input_element(self):
        return self.get_element(self.browser_input_element)


# 定义操作层
class BrowserHandle(BaseHandle):
    def __init__(self):
        self.browser_page = BrowserPage()

    # 清空输入框（新增完整清空逻辑）
    def clear_browser_input(self):
        try:
            # 查找清空按钮并点击
            clear_btn = self.browser_page.find_browser_clean_element()
            clear_btn.click()
        except TimeoutException:
            # 若清空按钮不存在，直接清空输入框文本（兼容不同浏览器版本）
            input_box = self.browser_page.find_browser_input_element()
            input_box.clear()

    # 浏览器输入框输入
    def input_browser_input_element(self, browser_input_element):
        # 先执行清空操作
        self.clear_browser_input()
        # 再输入文本
        self.input_text(self.browser_page.find_browser_input_element(), browser_input_element)
# 定义业务层
class BrowserProxy:
    def __init__(self):
        self.browser_handle = BrowserHandle()

    # 在输入框输入URL（包含清空操作）
    def go_hm_page(self, browser_input_element):
        self.browser_handle.input_browser_input_element(browser_input_element)